#ifndef QXGAME_WAVEMANAGER_H
#define QXGAME_WAVEMANAGER_H

#include <vector>
#include <queue>
#include <memory>
#include "GameTimer.h"
#include "GameVector.h"
#include "Singleton.h"
#include "../wave/Wave.h"
#include "../object/base/Character.h"

class WaveManager : public Singleton<WaveManager> {
    friend Singleton<WaveManager>;

public:
    void OnUpdate(double delta);
    void AddBirthQueue(const std::shared_ptr<Character>& enemy);
protected:
    WaveManager();
    ~WaveManager() = default;

private:
    size_t idx = 0;
    std::queue<std::shared_ptr<Character>> enemyQueue;
};


#endif //QXGAME_WAVEMANAGER_H
